IPtables deep dive
iptables — bu Linux yadrosi (kernel) ichida ishlaydigan Netfilter tizimining foydalanuvchi interfeysidir. U orqali siz kiruvchi, chiquvchi yoki kompyuter orqali o'tayotgan paketlar (ma'lumotlar) ustida filtrlash, marshrutlash, NAT, va boshqa xavfsizlik amallarini bajarasiz.
Ya’ni bu vosita sizga firewall (devor) sifatida xizmat qiladi.
iptables asosiy TUSHUNCHALARI
1. Chains (Zanjirlar):
iptablesda paketlar quyidagi zanjirlar (chains) orqali tekshiriladi:
| Chain | Tavsifi |
|---|---|
| INPUT | Kompyuterga kelayotgan trafik uchun |
| OUTPUT | Kompyuterdan chiqayotgan trafik uchun |
| FORWARD | Kompyuter orqali o'tayotgan trafik (router sifatida) |
| PREROUTING | NAT dan oldin bajariladi |
| POSTROUTING | NAT dan keyin bajariladi |
2. Tables (Jadvallar):
iptablesda har xil turdagi vazifalar uchun turli jadvallar mavjud:
| Jadval nomi | Maqsadi |
|---|---|
| filter | Odatiy jadval — filtrlash uchun ishlatiladi (INPUT, OUTPUT, FORWARD) |
| nat | NAT (masalan, IP manzilni o‘zgartirish) uchun ishlatiladi |
| mangle | Paketga alohida bayroq, belgi (mark) qo‘shish uchun |
| raw | Ulanishni kuzatishdan oldin qoida qo‘yish uchun |
| security | SELinux xavfsizlik filtratsiyasi uchun |
Harakat Jarayoni (Packet Flow)
PREROUTING
|
[Routing Decision]
/ \
Local FORWARD ----> POSTROUTING
Process |
| OUTPUT
↓ ↓
INPUT Local Process
Oddiy Misollar
1. Barcha trafikni rad etish:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
2. Faqat localhostdan ruxsat berish:
iptables -A INPUT -i lo -j ACCEPT
3. 80-port (HTTP) ga ruxsat berish:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
4. IP manzilni bloklash:
iptables -A INPUT -s 192.168.1.100 -j DROP
Deep Concepts
Stateful Filtering (Holatga asoslangan filtr):
iptables paketning holatini tekshirishi mumkin:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Bu sizga ilgari bog‘langan so‘rovlarni avtomatik o‘tkazishga imkon beradi.
NAT (Masquerading)
Internetga chiqayotgan lokal IP’larni tashqi IP’ga o‘zgartirish:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Foydali Buyruqlar
| Buyruq | Tavsifi |
|---|---|
iptables -L | Hozirgi qoida ro‘yxatini ko‘rish |
iptables -F | Barcha qoidalarni tozalash (flush) |
iptables -S | Har bir qoida qanday yozilganini ko‘rsatadi |
iptables-save | Qoida holatini faylga saqlash |
iptables-restore | Saqlangan holatni tiklash |
Amaliy Misol
Masalan: faqat 22-port (SSH) va 80-port (HTTP) ochiq, qolgan barchasi yopiq:
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Qo‘shimcha: ufw va firewalld
iptables qiyin bo‘lsa, ufw (Uncomplicated Firewall) yoki firewalld kabi soddalashtirilgan vositalardan foydalanish mumkin.
❗ Diqqat
iptableshar bir qoidani yuqoridan pastga qarab tekshiradi.-A(append) orqali qo‘shilgan qoidalar oxiriga qo‘shiladi.- Har doim oxirida default policy qo‘yilgan bo‘lishi kerak (DROP yoki ACCEPT).